Sprachbeschreibung von JoJoScript

eigene Funktionen

Funktionsname Bezeichner
Funktionsparameter Variablenliste
Funktionsk÷rper  Global-Anweisung Anweisungsfolge
Variablenliste Variable
Variablenliste , Variable
Global-Anweisung GLOBAL Variablenliste ;
Kommentar //beliebige-Zeichen-bis-Zeilenende

JoJoScript-Anweisungen
Anweisungsfolge ;
Codeblock
IF-Block
SWITCH-Block
WHILE-Block
FOR-Block
RETURN-Anweisung
Anweisung ;
Codeblock { Anweisungsfolge }
IF-Block IF ( Anweisung ) Anweisungsfolge Elsecodeblock
Beispiel:
if (x==3)
{
  y1=2;
  y2=3;
}
else
{
  y1=0;
  y2=0;
}
Elsecodeblock
ELSE
Anweisungsfolge
SWITCH-Block SWITCH ( Anweisung ) { CASE-Block }
Beispiel:
switch (x)
{
  case 1:  y=sin(a);
  case 2:  y=cos(a);
  case 3:  y=tan(a);
  default: y=0;
}
CASE-Block
CASE Konstante : C-Anweisung
DEFAULT : C-Anweisung
C-Anweisung Anweisungsfolge
BREAK-Anweisung
WHILE-Block WHILE ( Anweisung ) S-Codeblock
Eine WHILE-Schleife wird solange wiederholt, wie das Ergebnis der Vergleichsanweisung wahr ist. Diese Auswertung wird vor der ersten Anweisung des Codeblocks durchgefⁿhrt.
Beispiel:
i=1;
while (i<=10)
{
  i; i=i+1;
}
FOR-Block FOR ( S-Anweisung ; A-Anweisung ; N-Anweisung ) S-Codeblock

Eine FOR-Schleife wird solange wiederholt, wie das Ergebnis der Vergleichsanweisung (A-Anweisung) wahr ist.
Vor dem ersten Vergleich wird die S-Anweisung ausgefⁿhrt (Initialisierung). Diese Anweisung ist aber von der Vergleichsanweisung v÷llig unabhΣngig zu sehen.
Nach der letzten Anweisung des Codeblocks wird die N-Anweisung (Reinitialisierung) ausgefⁿhrt. Auch sie ist von der Vergleichsanweisung unabhΣngig zu sehen.


Beispiel:
for (i=1; i<=90; i=i+10)
{
  "Sinus von "; i; "="; sin(i*6.283185/360);
}
S-Codeblock Anweisungsfolge
CONTINUE-Anweisung
BREAK-Anweisung
S-Anweisung Anweisung
A-Anweisung Anweisung
N-Anweisung Anweisung
RETURN-Anweisung RETURN Anweisung ;

ⁿber RETURN wird der aufrufenden Funktionen ein Funktionsergebnis zurⁿckgegeben.
Fehlt bei RETURN eine Rⁿckgabeangabe, wird 0 als Funktionsergebnis zurⁿckgegeben.
Fehlt in einer Funktion RETURN als letzte Anweisung, wird 0 als Funktionsergebnis zurⁿckgegeben.


Beispiele:
return;
return 2;
return "LΣnge="+len(x);
CONTINUE-Anweisung CONTINUE ;

CONTINUE ist nur in einer FOR-Schleife und einer WHILE-Schleife zulΣssig.
Es bewirkt einen direkten "Sprung" zum Schleifenende, was bei einer WHILE-Schleife zur erneuten Auswertung der Schleifenbedinung fⁿhrt.
Bei einer FOR-Schleife wird dadurch die Reinitialisierung der Schleifenformulierung (N-Anweisung) und eine anschlie▀ende Auswertung der Schleifenbedingung (A-Anweisung) durchgefⁿhrt.
CONTINUE wirkt sich immer auf den innersten Schleifenk÷rper aus.

BREAK-Anweisung BREAK ;

BREAK ist nur in einer FOR-Schleife, einer WHILE-Schleife und im SWITCH-Block zulΣssig.
Es bewirkt ein direktes Verlassen der Schleife bei einer FOR-Schleife und einer WHILE-Schleife sowie das Verlassen des CASE-Blocks in einem SWITCH-Block.
BREAK wirkt sich immer auf den innersten Schleifenk÷rper sowie SWITCH-Block aus.

Anweisung
Zuweisung
Funktionsaufruf
Operation
Zuweisung Variable = Anweisung
Beispiele:
y=1;
y="Hallo";
y="Heute ist der " + date();
Funktionsaufruf Funktionsname ( Argumentliste )
Argumentliste Argument
Argumentliste , Argument
Argument  
Variable
Konstante
Operation Objekt Operator Objekt
Operator aufsteigend in der PrioritΣt der Operatoren
?: Bedingungsoperator
|| logisches Oder
&& logisches Und
| binΣres oder
^ binΣres exklusives Oder
& binΣres Und
==   != Gleichheit, Ungleichheit
<  >   >=   <= kleiner, gr÷▀er, gr÷▀ergleich, kleinergleich
+   - Addition, Subtraktion
*   /   % Multiplikation, Division, Modulus
~ binΣres Komplement
! Negation
Objekt Variable
Konstante
Funktionsaufruf
( Anweisung )
Variable Bezeichner
Funktionsname Bezeichner
Konstante Integer
Double
String
Symbol
Symbol @Bezeichner
Ein Symbol wird intern als enumerativer Wert abgebildet
Integer [0-9]+
Hexadezimalinteger 0[Xx][0-9A-Fa-f]+
Double [0-9]+.[0-9]+
String "Any"
Any [beliebigesZeichen]*
Bezeichner [_A-Za-z─Σ╓÷▄ⁿ▀][_A-Za-z0-9─Σ╓÷▄ⁿ▀]*
zwischen Gro▀/Kleinschreibung wird nicht unterschieden

Datentypen
Double Reelle Zahlen
-1,79769313486232E308 bis -4,94065645841247E-324 fⁿr negative Werte
4,94065645841247E-324 bis 1,79769313486232E308 fⁿr positive Werte
Integer Ganze Zahlen
-2147483648 bis 2147483647
String Zeichenketten
Date Datum/Zeit
Datum im Bereich vom 01. Januar 100 bis zum 31. Dezember 9999
Uhrzeit im Bereich von 0:00:00 bis 23:59:59
Symbol Wird intern als enumerativer Datentyp gesehen.
Wird irgendwo ein Symbol angesprochen, so ist es Programmweit bekannt.
Vor den Bezeichner des Symbols ist ein @ zu setzen.
Vordefinierte Symbole sind:
@TRUE Ist auch das positive Ergebnis bei logischen Operationen
@FALSE Ist auch das negative Ergebnis bei logischen Operationen
@ERROR Fehlerindikator
@UNDEFINED Datentyp undefiniert
@INTEGER Datentyp Integer
@DOUBLE Datentyp Double
@STRING Datentyp String
@SYMBOL Datentyp Symbol
@DATE Datentyp Date
@UNKNOWN Unbekannt

Konvertierungsregeln:

Operand 1 Operand 2 Ergebnis
INTEGER INTEGER INTEGER
INTEGER DOUBLE DOUBLE
INTEGER STRING STRING
INTEGER SYMBOL SYMBOL
INTEGER DATE DATE
DOUBLE INTEGER DOUBLE
DOUBLE DOUBLE DOUBLE
DOUBLE STRING STRING
DOUBLE SYMBOL SYMBOL
DOUBLE DATE DATE
STRING INTEGER STRING
STRING DOUBLE STRING
STRING STRING STRING
STRING SYMBOL STRING
STRING DATE STRING
SYMBOL INTEGER SYMBOL
SYMBOL DOUBLE SYMBOL
SYMBOL STRING STRING
SYMBOL SYMBOL SYMBOL
SYMBOL DATE SYMBOL
DATE INTEGER DATE
DATE DOUBLE DATE
DATE STRING STRING
DATE SYMBOL SYMBOL
DATE DATE DATE